<?php

/**
 * Green Calc
 * Calc sub controller form
 * 2009-2014 All rights reserved
 * @link http://www.greenkey.ru
 * @license GNU/GPL v3
 */
// No direct access
defined('_JEXEC') or die;

// Подключаем библиотеку controllerform Joomla.
jimport('joomla.application.component.controllerform');

/**
 * Calc form контроллер.
 */
class CalcControllerCalc extends JControllerForm {

    /**
     * Переопределение метода для проверки,
     * может ли пользователь редактировать существующую запись.
     *
     * @param   array   $data  Массив данных.
     * @param   string  $key   Имя первичного ключа.
     * 
     * @return  boolean  True, если разрешено редактировать запись.
     */
    protected function allowEdit($data = array(), $key = 'id') {
        $recordId = (int) isset($data[$key]) ? $data[$key] : 0;

        if ($recordId) {
            // Проверка редактирования на уровне записи.
            return JFactory::getUser()->authorise('core.edit', $this->option . '.calc.' . $recordId);
        } else {
            // Проверка редактирования на уровне компонента.
            return parent::allowEdit($data, $key);
        }
    }

    /**
     * 
     * Сохранение списка предопределенных переменных 
     * перед сохранением расчета в БД,
     * 
     * @param type $key
     * @param type $urlVar
     * 
     * @return  boolean  True если успешно, false otherwise.
     */
    public function save($key = null, $urlVar = null) {
        // Check for request forgeries.
        JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN'));

        $model = $this->getModel();
        // Получаем массив с определениями
        $data = $this->input->post->get('calc_vars', array(), 'array');
        if (!$model->saveVars($data)) {
            $this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_SAVE_FAILED', $model->getError()));
            return false;
        }
        return parent::save($key, $urlVar);
    }

}
